home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’90 / DataStack Filer / DemoTest.mod < prev    next >
Encoding:
Text File  |  1990-06-15  |  2.1 KB  |  98 lines  |  [TEXT/MPS ]

  1. MODULE DemoTest;
  2. (*    Copyright:    © 1990 by Keith Nemitz, all rights reserved. *)
  3.  
  4. FROM SYSTEM IMPORT ADDRESS,ADR;
  5.  
  6. FROM Strings IMPORT Length,MakePascalString,MakeModulaString;
  7.  
  8. FROM MacTypes IMPORT Debugger,debugstr,OSErr,Str255,Str31;
  9. FROM FileManager IMPORT HGetVol;
  10. FROM ResourceManager IMPORT ResError;
  11. FROM QuickDraw IMPORT Random;
  12.  
  13. FROM InOut IMPORT WriteString,WriteLongInt,WriteLongCard,WriteLn;
  14. FROM IntEnv IMPORT Exit;
  15.  
  16. FROM LocLib IMPORT CopyStr;
  17. FROM StackFiles IMPORT StackFile,NewStackFile,GetStackFile,CloseStackFile,
  18.         GetDataStack,SaveStackFile;
  19. FROM DataStacks IMPORT AddCard,GetCardByID,DataStack,GetCardByName,
  20.         RemoveCard,InNameOrderDo,CountCards,GetCardName,GetCardIndx,
  21.         GetCardID,SetCardName;
  22.  
  23. TYPE
  24.     ong = RECORD
  25.                 s :ARRAY [0..23] OF CHAR;
  26.                 n :LONGINT;
  27.                 END;
  28.  
  29. VAR
  30.     vRef,err :INTEGER;
  31.     dirID :LONGINT;
  32.     sf :StackFile;
  33.     ds :DataStack;
  34.     str,sss :Str255;
  35.     i,j,seed :CARDINAL;
  36.     xOng :ong;
  37.  
  38.  
  39.  
  40. PROCEDURE RandomRange(m,n :CARDINAL):CARDINAL;
  41. BEGIN
  42.     RETURN (VAL(CARDINAL,Random()) MOD (n-m+1)) + m;
  43.     END RandomRange;
  44.  
  45. PROCEDURE MakeRandomName(VAR s:ARRAY OF CHAR);
  46. VAR
  47.     i,n,x :CARDINAL;
  48. BEGIN
  49.     n := RandomRange(2,27);
  50.     FOR i := 1 TO n DO
  51.         x := RandomRange(ORD(' '),ORD('z'));
  52.         s[i] := CHR(x);
  53.         END;
  54.     s[0] := CHR(n);
  55.     END MakeRandomName;
  56.  
  57.     
  58. BEGIN
  59.     err := ResError();
  60.     str := "";
  61.     IF HGetVol(NIL,vRef,dirID) # 0 THEN Exit(1); END;
  62.     
  63.     sf := NewStackFile('MainTest',vRef,dirID,100,1036,207);
  64.     IF VAL(ADDRESS,sf) = NIL THEN 
  65.         WriteString("failed to open stack"); WriteLn;
  66.         Exit(1);
  67.         END;
  68.     ds := GetDataStack(sf);
  69.  
  70.  
  71.     FOR i := 1 TO 5000 DO
  72.         MakeRandomName(str); (* pascal string *)
  73.         IF AddCard(ds,ADR(xOng),str) = 0 THEN
  74.             WriteString('Did not add card:'); WriteLongCard(i,7); WriteLn;
  75.             Exit(1);
  76.             END;
  77.         END;
  78.  
  79.     FOR i := 1 TO 1000 DO
  80.         RemoveCard(ds,RandomRange(1,CountCards(ds)),0);
  81.         END;
  82.  
  83.     FOR i := 1 TO CountCards(ds) DO
  84.         GetCardName(ds,0,GetCardID(ds,i,""),str);
  85.         j := GetCardIndx(ds,GetCardID(ds,0,""),str);
  86.         IF j = 0 THEN
  87.             WriteString('Bad Lookup');
  88.             MakeModulaString(str,sss);
  89.             WriteString(sss);
  90.             WriteLongInt(VAL(LONGINT,i),8); WriteLn;
  91.             Exit(1); 
  92.             END;
  93.         END;
  94.  
  95.     (* SaveStackFile(sf); *)
  96.     CloseStackFile(sf);
  97.  
  98. END DemoTest.